create database Student
on
(
	name='Student_data',
	filename='F:\sql\Student_data.mdf',
	size=5MB,
	maxsize=50MB,
	filegrowth=10%
)
log on
(
name='Student_log',
	filename='F:\sql\Student_log.ldf',
	size=5MB,
	maxsize=50MB,
	filegrowth=10%
)
go

use Student
go
create table stuinfo
(
	StuNo varchar(20) not null,
	StuName nvarchar(20) not null,
	StuAge int not null,
	StuAddress nvarchar(200),
	stuSeat int not null,
	stuSex int default(1) check(StuSex=1 or StuSex=0)
)

insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2501','张秋利','20','美国硅谷','1','1')
insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2502','李斯文','18','湖北武汉','2','0')
insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2503','马文才','22','湖南长沙','3','1')
insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2504','欧阳俊雄','21','湖北武汉','4','0')
insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2505','梅超风','20','湖北武汉','5','1')
insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2506','陈旋风','19','美国硅谷','6','1')
insert into stuinfo(StuNo,StuName,StuAge,StuAddress,stuSeat,stuSex)
values('s2507','陈风','20','美国硅谷','7','0')
go

select * from stuinfo

create table stuexam
(
	examNO int primary key identity(1,1),
	StuNO varchar(20) not null,
	writtenExam int not null,
	labExam int  not null
)

select * from stuexam
insert into stuexam(StuNO,writtenExam,labExam)
values('s2501','50','70')
insert into stuexam(StuNO,writtenExam,labExam)
values('s2502','60','65')
insert into stuexam(StuNO,writtenExam,labExam)
values('s2503','86','85')
insert into stuexam(StuNO,writtenExam,labExam)
values('s2504','40','80')
insert into stuexam(StuNO,writtenExam,labExam)
values('s2505','70','90')
insert into stuexam(StuNO,writtenExam,labExam)
values('s2506','85','90')

--1.查询学生信息表（stuinfo）中所有列信息，给每列取上中文名称
select StuNo 学号 from stuinfo
select StuName 姓名 from stuinfo
select StuAge 年龄 from stuinfo
select StuAddress 地址 from stuinfo
select stuSeat 座位号 from stuinfo
select stuSex 性别 from stuinfo

--2.查询学生信息表（stuinfo）中的姓名，年龄和地址三列的信息
select StuName,StuAddress,StuAge from stuinfo
--3.查询学生分数表（stuexam）中的学号，笔试和机试三列的信息，并为这三列取中文名字注意：要用三种方法
select StuNO as 学号,writtenExam as 笔试成绩,labExam as 机试成绩 from stuexam
select StuNO 学号,writtenExam 笔试成绩,labExam 机试成绩 from stuexam
select 学号=StuNO ,笔试成绩=writtenExam ,机试成绩=labExam  from stuexam
--4.查询学生信息表（stuInfo）中的学号，姓名，地址，以及将：姓名+@+地址 组成新列 “邮箱”
select 学号=stuNO,姓名=stuName,地址=stuAddress,stuName+'@'+stuAddress 姓名@地址 from StuInfo
--5.查询学生分数表（stuexam）中的学生的学号，笔试，机试以及总分（笔试+机试）这四列的信息
select 学号=StuNO ,笔试=writtenExam ,机试=labExam,writtenExam+labExam 总分 from stuexam
--6.查询学生信息表（stuInfo）中学生来自哪几个地方 
	select stuAddress from StuInfo

--7.查询学生信息表（stuInfo）中学生有哪几种年龄，并为该列取对应的中文列名'所有年龄'
	select distinct stuAge 所有年龄 from StuInfo

--8.查询学生信息表（stuInfo）中前3行记录 
	select top 3 * from StuInfo order by stuNO ASC

--9.查询学生信息表（stuInfo）中前4个学生的姓名和座位号
	select top 4 stuName,stuSeat from StuInfo order by stuNO ASC

--10.查询学生信息表（stuInfo）中一半学生的信息
	select top 50 percent * from StuInfo

--11.将地址是湖北武汉，年龄是20的学生的所有信息查询出来
	select * from StuInfo where stuAddress='湖北武汉'and stuAge=20

--12.将机试成绩在60-80之间的信息查询出来，并按照机试成绩降序排列
	select * from stuexam where labExam>60 and labExam<80 order by labExam DESC

--13.查询来自湖北武汉或者湖南长沙的学生的所有信息（用两种方法实现，提示；or和in）
	select * from StuInfo where stuAddress='湖北武汉' or stuAddress='湖南长沙'
	select * from StuInfo where stuAddress in('湖北武汉','湖南长沙')

--14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列
	select * from stuexam  where labExam<70 or labExam >90 order by labExam ASC

--15.查询年龄没有写的学生所有信息
	select * from StuInfo where stuAge is  null

--16.查询年龄写了的学生所有信息
	select * from StuInfo where stuAge is not null
		
--17.查询姓张的学生信息
	select * from StuInfo where stuName like '张%'

--18.查询学生地址中有‘湖’字的信息
	select * from StuInfo where stuAddress like '湖%'

--19.查询姓张但名为一个字的学生信息
	select * from StuInfo where stuName like '张_'

--20.查询姓名中第三个字为‘俊’的学生的信息，‘俊’后面有多少个字不限制
	select * from StuInfo where stuName like '__俊%'

--21.按学生的年龄降序显示所有学生信息
	select * from StuInfo where stuAge is not null order by stuAge DESC 

--22.按学生的年龄降序和座位号升序来显示所有学生的信息
	select * from StuInfo order by stuAge DESC,stuNO ASC
	
--23显示笔试第一名的学生的考试号，学号，笔试成绩和机试成绩
	select  top 1* from stuexam order by labExam DESC

--24.显示机试倒数第一名的学生的考试号，学号，笔试成绩和机试成绩
	select  top 1 * from stuexam order by writtenExam ASC
select * from stuexam
select * from StuInfo    